package com.danciyixue.boot.dcyx.service;

import com.danciyixue.boot.dcyx.model.entity.UnitTestRecords;
import com.danciyixue.boot.dcyx.model.form.UnitTestRecordsForm;
import com.danciyixue.boot.dcyx.model.query.UnitTestRecordsQuery;
import com.danciyixue.boot.dcyx.model.vo.UnitTestRecordsVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * 单元测试记录服务类
 *
 * @author youlaitech
 * @since 2025-06-15 16:33
 */
public interface UnitTestRecordsService extends IService<UnitTestRecords> {

    /**
     *单元测试记录分页列表
     *
     * @return {@link IPage<UnitTestRecordsVO>} 单元测试记录分页列表
     */
    IPage<UnitTestRecordsVO> getUnitTestRecordsPage(UnitTestRecordsQuery queryParams);

    /**
     * 获取单元测试记录表单数据
     *
     * @param id 单元测试记录ID
     * @return 单元测试记录表单数据
     */
     UnitTestRecordsForm getUnitTestRecordsFormData(Long id);

    /**
     * 新增单元测试记录
     *
     * @param formData 单元测试记录表单对象
     * @return 是否新增成功
     */
    boolean saveUnitTestRecords(UnitTestRecordsForm formData);

    /**
     * 修改单元测试记录
     *
     * @param id   单元测试记录ID
     * @param formData 单元测试记录表单对象
     * @return 是否修改成功
     */
    boolean updateUnitTestRecords(Long id, UnitTestRecordsForm formData);

    /**
     * 删除单元测试记录
     *
     * @param ids 单元测试记录ID，多个以英文逗号(,)分割
     * @return 是否删除成功
     */
    boolean deleteUnitTestRecordss(String ids);

    /**
     * 保存或更新单元测试记录
     *
     * @param userId 用户ID
     * @param unitId 单元ID
     * @param score 测试得分
     * @param timeSpent 测试耗时(秒)
     * @param isEnd 是否完成(0-未完成, 1-完成)
     * @return 是否保存成功
     */
    boolean saveOrUpdateUnitTestRecord(Long userId, Long unitId, Integer score, Integer timeSpent, Integer isEnd);

}
